import Vue from 'vue'
import App from './App.vue'
import router from './router'
// import './plugins/element.js'
import './plugins/element-dragable.js'
import TreeTable from 'vue-table-with-tree-grid'
import moment from 'moment'
import { Message, MessageBox } from 'element-ui'

// 导入全局样式
import './assets/css/global.css'
// 要在main.js 入口文件中导入 js 和 css 以及其他文件的本质原因
// 为webpack 打包 准备好路径，否则 webpack 不知道要打包哪个文件
import './assets/fonts/iconfont.css'
// 导入 axios 用于发送请求

import axios from 'axios'
// 导入富文本编辑器
import VueQuillEditor from 'vue-quill-editor'

// 导入 nprogress 进度条组件
import nprogerss from 'nprogress'

Vue.use(VueQuillEditor)

// 设置 axios 的基地址
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'

// 设置 axios 请求拦截器, 为请求添加 Authorization 字段
// 请求拦截器在发送请求之前执行
axios.interceptors.request.use(config => {
  nprogerss.start()
  config.headers.Authorization = window.sessionStorage.getItem('token')
  return config
})

// 响应拦截器
axios.interceptors.response.use(config => {
  nprogerss.done()
  return config
})

// 将这个方法挂载到 vue 原型上 ，供后面的对象使用
Vue.prototype.$http = axios
// -----------------------------------------
// 如果以后使用是以方法来进行调用则需要挂载到Vue 的 原型上
Vue.prototype.$message = Message

// 将 弹出提示框方法添加到 vue 的原型中
Vue.prototype.$messageBox = MessageBox
// 注册全局组件
Vue.component('tree-table', TreeTable)
// 时间过滤器
Vue.filter('dateFormat', function (nowDate) {
  return moment(nowDate).format('YYYY-MM-DD hh:mm:ss')
})
Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
